In order to look for errors in software programs (an activity referred to as “debugging”), some software development tools provide the ability to record the sequence of operations that a processor performed while executing a program. This is referred to as tracing the execution of the program, and the information that is captured is referred to as trace data The trace data may comprise data such as the addresses of operational codes (opcodes) executed by the processor and values of various processor registers at each executed instruction.
The high speeds at which processors operate can cause the volume of trace data that is capture to become overwhelming. For example, a processor core executing at over a GigaHertz produces billions of events in just one second of trace data capture. Thus, while the information the programmer is seeking to assist in debugging a program may be present in the trace data, locating the information in a file with over a billion captured events is difficult.